#define _CRT_SECURE_NO_WARNINGS 1

#include<iostream>
#include<string>
#include <algorithm>
using namespace std;

//string reverseWords(string s) {
//    int prev = 0;
//    int next = 0;
//    int n = s.size();
//    while (prev < n)
//    {
//        while (s[next] != '\0' && s[next] != ' ')
//        {
//            next++;
//        }
//        reverse(s.begin() + prev, s.begin() + next);
//        prev = next + 1;
//        next = prev;
//    }
//    return s;
//}
//
//int main()
//{
//    string s = { "God Ding" };
//    cout << reverseWords(s);
//	return 0;
//}


//string addStrings(string num1, string num2) {
//    if (num1 == "0" || num2 == "0")
//    {
//        return "0";
//    }
//    string ans;
//    int len = (num1.size() > num2.size() ? num1.size() : num2.size()) + 1;
//    ans.reserve(len);
//    int add = 0;
//    int i = num1.size() - 1;
//    int j = num2.size() - 1;
//    while (i >= 0 || j >= 0)
//    {
//        int n1 = i >= 0 ? num1[i] - '0' : 0;
//        int n2 = j >= 0 ? num2[j] - '0' : 0;
//        int ret = n1 + n2 + add;
//        add = ret / 10;
//        ret %= 10;
//        ans.push_back('0' + ret);
//        i--;
//        j--;
//    }
//    if (add)
//    {
//        ans.push_back('0' + add);
//    }
//    reverse(ans.begin(), ans.end());
//    return ans;
//}
//
//string multiply(string num1, string num2) {
//    int len1 = num1.size();
//    int len2 = num2.size();
//    string mul = num2;
//    string ans, tmp;
//    ans.reserve(len1 + len2);
//    for (int i = len1 - 1; i >= 0; i--)
//    {
//        for (int j = len2 - 1; j >= 0; j--)
//        {
//            tmp = to_string((num1[i] - '0') * (num2[j] - '0'));
//            for (int z = 0; z < len1 + len2 - 2 - i - j; z++)
//            {
//                tmp.push_back('0');
//            }
//            ans = addStrings(ans, tmp);
//        }
//    }
//    return ans;
//}
//
//int main()
//{
//    string s1 = { "498828660196" };
//    string s2 = { "840477629533" };
//    cout << multiply(s1, s2);
//	return 0;
//}

int sch[100100], stu[100100];

int main()
{
	int m, n;
	cin >> m >> n;
	for (int i = 0; i < m; i++)
	{
		cin >> sch[i];
	}
	for (int i = 0; i < n; i++)
	{
		cin >> stu[i];
	}
	sort(sch, sch + n + 1);
	int ans = 0;
	for (int i = 0; i < n; i++)
	{
		int left = 0, right = m;
		while (left < right - 1)
		{
			int mid = (left + right) / 2;
			if (sch[mid] <= stu[i])
			{
				left = mid;
			}
			else
			{
				right = mid;
			}
		}
		ans += min(abs(sch[left] - stu[i]), abs(sch[right] - stu[i]));
	}
	cout << ans;
	return 0;
}